package org.example.projecttwo.entity.dto.content.response;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.example.projecttwo.entity.article.ArticlePartition;

import java.time.LocalDateTime;
import java.util.Map;

@Data
@Schema(description = "文章详情视图对象")
public class ArticleDetailVO {
    @Schema(description = "文章ID")
    private Long id;

    @Schema(description = "文章标题")
    private String title;

    @Schema(description = "文章内容")
    private String content;

    @Schema(description = "封面图片URL")
    private String coverUrl;

    @Schema(description = "文章状态：0-草稿、1-待审核、2-审核通过、3-审核未通过、4-已下架、5-已删除")
    private Integer status;

    @Schema(description = "状态名称")
    private String statusName;

    @Schema(description = "是否精品：0-否，1-是")
    private Integer featured;

    @Schema(description = "分区信息")
    private ArticlePartition partition;

    @Schema(description = "作者ID")
    private Long authorId;

    @Schema(description = "作者名称")
    private String authorName;

    @Schema(description = "发布策略：1-立即发布，2-定时发布")
    private Integer publishStrategy;

    @Schema(description = "定时发布时间")
    private LocalDateTime publishTime;

    @Schema(description = "创建时间")
    private LocalDateTime createTime;

    @Schema(description = "更新时间")
    private LocalDateTime updateTime;

    @Schema(description = "审核时间")
    private LocalDateTime auditTime;

    @Schema(description = "审核人")
    private String auditor;

    @Schema(description = "审核意见")
    private String auditOpinion;

    @Schema(description = "统计数据：浏览量、点赞数、收藏数等")
    private Map<String, Integer> statistics;

    @Schema(description = "是否精品：0-否，1-是")
    private Integer isFeatured;

    @Schema(description = "作者昵称")
    private String authorNickname;

    @Schema(description = "审核结束时间")
    private LocalDateTime auditEndTime;

    @Schema(description = "审核人")
    private String auditUser;

    @Schema(description = "审核未通过原因")
    private String rejectReason;
}